<template>
  <div></div>
</template>

<script>
import store from '@/store'
import Webrtc2Sip from '@/utils/Webrtc2Sip'
export default {
  data() {
    return {
      webrtc2Sip: '', //手柄
    }
  },
  computed: {},
  methods: {
    // sip栈事件 -- 来电等事件
    stackEvent(e, webrtc2Sip, acceptCallback, hangupCallback) {
      console.log('全局事件stackEvent', e.type, e.description)
    },
    // 会话事件 -- 挂断等
    sessionEvent(e, sessionType, webrtc2Sip) {
      console.log('全局事件 sessionEvent', e.type, sessionType, e.description)
      switch (e.type) {
        case 'connected': //连接登录成功
          localStorage.setItem('userName', sessionStorage.getItem('userName'))
          localStorage.setItem('passWord', sessionStorage.getItem('passWord'))
          const path = this.$route.path
          if (path == '/meet') {
            window.handleJoinMeet()
          } else {
            this.$router.push({ name: 'meet' })
          }
          // this.$router.push({ name: 'meet' })
          break
        case 'terminated': //登录失败
          if (e.description == '已经在呼叫中') {
            return
          }
          if (sessionType == 'Call') {
            if (e.description == '会议结束') {
              this.$message.warning(e.description)
              window.handleOverMeet()
              return
            }
            if (e.description == '用户未登录') {
              this.$router.push({ name: 'login' })
              return
            }
          }
          this.$message.warning(e.description)
          this.$router.push({ name: 'login' })
          break
        case 'meet_users':
          let userContent = e.description
          let userList = userContent.split('/')
          store.dispatch('meetUsersEvent', userList) //会议成员 vuex缓存
          break
        default:
          break
      }
    },
    // 初始化
    initWebrtc() {
      // 初始化
      if (!Webrtc2Sip.isInited) {
        Webrtc2Sip.init(this.sessionEvent, this.stackEvent, {})
      }
      let obj = {
        phone: sessionStorage.getItem('userName'), // SIP号码(登录用户号码)
        password: sessionStorage.getItem('passWord'), // 密码
        // websocketServer: '192.168.8.199:8082', // websocket服务器
        iceServers: '', // ice服务器 可多个以逗号分隔，也可以为空 192.168.8.199:3478
      }
      this.register(obj)
    },
    // 注册
    register(config) {
      // if (!navigator.getUserMedia && !navigator.webkitGetUserMedia) {
      //   return this.$message({
      //     duration: 3000,
      //     type: 'error',
      //     message: '无法获取摄像头或麦克风',
      //   })
      // }
      console.log('register')
      // 创建对象
      let webrtc2Sip = new Webrtc2Sip()
      // 注册
      webrtc2Sip.register(config)
      // 自定义事件
      // webrtc2Sip.setCustomEvent(this.sessionEvent, this.stackEvent)
      //定义到全局
      this.webrtc2Sip = webrtc2Sip
    },
  },
  mounted() {
    if (sessionStorage.getItem('userName')) {
      //登录状态才能装载
      this.initWebrtc()
    }
    //定义全局函数
    window['initWebrtc'] = (res) => {
      this.initWebrtc.call(this, res)
    }
  },
  created() {},
}
</script>
